#include "data.h"

/* Inicia a precisão */
void init_prec()
{
    mpf_init_set_ui(prec, 10);
    mpf_pow_ui(prec, prec, DIGITS); 
	mpf_ui_div(prec, 1, prec); // prec = 1/(10^PREC)
}

/* Limpa a precisão */
void clear_prec()
{
    mpf_clear(prec);
}

/* Verifica a convergência de dois valores utilizando a variável prec */
int converge(mpf_t a0, mpf_t a1)
{
    mpf_t aux;
    int ret;

    mpf_init(aux);

    /* aux será a diferença absoluta entre os dois parâmetros: aux = |a1-a0| */
    mpf_sub(aux, a1, a0); mpf_abs(aux, aux);
    
    /* Compara com a precisão e, se for menor, garantimos convergência */
    ret = (mpf_cmp(aux, prec) <= 0);

    mpf_clear(aux);

    return ret;
}

